const ejs = require("ejs");
const path = require("path");
const fs = require("fs");

/**
 * 编译模板
 * @param {String} template 模板文件
 * @param {Object} data 数据对象
 */
const compile = (template, data) => {
  // const templatePosition = `../templates/${template}`;
  // const templatePath = path.resolve(__dirname, templatePosition)
  // console.log(templatePath);

  const templatePath = path.resolve(__dirname, template);

  return new Promise((resolve, reject) => {
    ejs.renderFile(templatePath, { data }, {}, (err, result) => {
      if (err) {
        console.log(err);
        reject(err);
        return;
      }
      resolve(result);
    });
  });
};

/**
 * 写出文件
 * @param {String} path 文件路径
 * @param {String} content 文件内容
 */
const writeToFile = (path, content) => {
  // 判断目标文件的文件夹是否存在，如果不存在则自动创建文件夹
  return fs.promises.writeFile(path, content);
};

/**
 * 创建文件夹（包括子目录）
 * @param {String} pathName 目录路径
 */
const createDirSync = (pathName) => {
  if (fs.existsSync(pathName)) {
    return true;
  } else {
    if (createDirSync(path.dirname(pathName))) {
      fs.mkdirSync(pathName);
      return true;
    }
  }
};

module.exports = {
  compile,
  writeToFile,
  createDirSync,
};
